﻿// 多文档编程.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include "pch.h"
#include <iostream>
#include "Add.h"
#include "sub.h"
#include <Windows.h>

/*
库：代码仓库
	把代码提供给其他程序（进程）使用

	源程序文件     ---->   预处理      ----> 编译    ----> 链接   ---> 可执行程序文件
						宏展开  头文件引入 预处理指令
			#include    宏替换    #ifndef

语言自带的库：
	stdio.h     iostream
操作系统的库：
	dbt.h  windows.h

静态库：
	代码 在编译的时候就拿过来了   放到了 obj 里面  就在exe里面
动态库：
	编译的时候只是预留一个接口  ，代码不在exe里面 运行的时候 动态加载

使用了动态库  exe比较小  ； 要作改变不用重新编译生成exe(重新安装 升级)

回顾：
	多文档编程


C制作静态库
	创建静态库工程
	写代码  .h  .c
	生成 *.lib
C使用C的静态库
	#pragma comment(lib,"*.lib")

C制作动态库
	创建动态库工程
	写代码  .h  .c
	生成 *.dll  没有*.lib
	在函数声明的前面添加  _declspec(dllexport) 就会生成*.lib

C使用C的动态库
	#pragma comment(lib,"*.lib")
	双击运行的时候要注意 把 *.dll 放到exe当前目录下



C++使用C的静态库
//C++中使用C的静态库
#pragma comment(lib,"..\\Debug\\CLanguageLib.lib")
extern "C" void test(int, int);//声明 并说明是C语言的函数

C++函数命名机制 编译的时候会给函数重新命名

C++使用C的动态库

C++制作静态库
C++制作动态库
C不能使用C++的库
C++使用C++静态库
C++使用C++动态库

类库的制作
C++使用类库



防止头文件重复引入：
#ifndef _C_LIB_
#define _C_LIB_


#endif


#pragma once

*/

int main()
{
    int n = 0;
    int m = 0;
    Add jia;
    sub jian;
    while (1)
    {
        std::cout << "please input (n,m)>";
        std::cin >> n >> m;
        std::cout<< n << "+"<< m << "=" << jia.suan(n, m)<<std::endl;
        std::cout<< n << "-"<< m << "=" << jian.suan(n, m)<<std::endl;
       
        system("pause");
        system("cls");
    }
   





    return 0;
}

